package day11;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Locale;

/*本类用于测试String常用方法*/
public class TestString2 {
    public static void main(String[] args) {
        //1.创建字符串--堆中常量池,有高效效果
        String s = "abc";
        char[] value = {'a','b','c','b'};
        String ss = new String(value);

        //2.测试常用方法
        System.out.println(s.charAt(1));//b,获取下标为1处位置上的字符

        String s2 = s.concat("cxy");//拼接字符串,但是并不影响本串的值
        System.out.println(s2);//abccxy,如果想多次使用,可以再定义一个变量保存拼接结果
        System.out.println(s);//abc,串s本身的值没有被影响

        System.out.println(s.endsWith("y"));//false,判断是否以指定元素结尾
        System.out.println(s.startsWith("a"));//ture,判断是否以指定元素开头

        System.out.println(ss.equals(s));//true,String重写了,比较的是串本身的内容
        System.out.println(s == ss);//false,比较的是地址值,一个高效在堆中常量池,一个不是,地址值不同

        System.out.println(s.getBytes());//[B@1b6d3586,把字符串转化成byte[],所以打印数组地址值
        System.out.println(s.indexOf("b"));//1,获取b字符在串中第一次出现的下标值
        System.out.println(ss.lastIndexOf("b"));//3,获取b字符在串中最后一次出现的位置
        System.out.println(ss.length());//4,获取指定字符串的长度

        String s3 = "a b c d e";
        /*本方法的作用是根据指定元素分割字符串,返回值类型是String[]*/
        System.out.println(s3.split(" "));//[Ljava.lang.String;@4554617c
        System.out.println(Arrays.toString(s3.split(" ")));//使用数组工具类打印数组具体元素

        System.out.println(s3.substring(3));// c d e,从下标为3的位置处开始截取剩下的字符串
        System.out.println(s3.substring(1,5));// b c,截取的[1.5)的字符串,含头不含尾

        System.out.println(s3.toUpperCase());//A B C D E,把串变成全大写
        System.out.println(s3.toLowerCase());//a b c d e,把串变成全小写

        s3 = "       abced     ";
        System.out.println(s3.trim());//abced,去除数据首尾两端的空格

        System.out.println(String.valueOf(10));//10,把int10转成成String类型
        System.out.println("20"+10);//2010,String与int数据进行了拼接
        System.out.println(String.valueOf(10)+10);//1010,把int10转成成String类型
        System.out.println(10+10);//20,int10+int10=int20



    }
}
